package com.hanamaki.datastruct;

import com.hanamaki.oop.demo02.Person;

import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.*;

/**
 * 集合
 */
public class ArrayListDemo {

    public static void main(String[] args) {

        /* 数组的使用 定义一个数组 */
        int[] a = new int[2];
        /* 数组的赋值  通过下标   0 */
        a[0] = 1;
        System.out.println(Arrays.toString(a));

        /* 数组取值 下标  0 */
        System.out.println(a[0]);

        /* 获得数组中的 元素的 个数 */
        System.out.println(a.length);


        /* 想要使用  ArrayList 就要实例化 */
        /* String 代表泛型，就是说 集合中能够存放什么类型的 值 */
        /* 在集合的泛型中 只能使用数据类型的引用数据类型 */
        List<String> list = new ArrayList<>();
        /* 打印集合 */
        System.out.println(list);

        /* 集合如何 添加值 */
        list.add("hanamaki");
        list.add("andy");

        /* 在集合中  元素的  下标 同样和数组一样 是从 0开始的 */
        list.add(0, "first");
        System.out.println(list);

        /* 使用 contains方法 来判断 此列表中  是否包含指定的 元素 */
        boolean flag = list.contains("andy1");
        System.out.println(flag);

        /* 集合中  如何 取值 ？ 是通过下标  0 */
        System.out.println(list.get(0));

        /* 使用 set 方法 来替换 andy  为 yutou */
        list.set(2, "autou");
        System.out.println(list);

        /* 获得集合中 的元素的个数  */
        System.out.println(list.size());

        /* 在集合中 可以将 集合转换为 数组 */
        Object[] objects = list.toArray();
        System.out.println(Arrays.toString(objects));

        /* 在数组中 可以将  数组 转换为集合 需要使用 数组的工具类 Arrays */
        List<Object> objects1 = Arrays.asList(objects);
        System.out.println(objects1);

        /* 使用 集合中的 sort方法 来进行 排序 */
        Collections.sort(list);
        System.out.println(list);

        /*  集合的遍历方式  */
        System.out.println("遍历集合 可以通过 For 、ForEach、Iterator");

        /* 普通  for循环 */
        for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

        /* 增强 for循环 */
        for (String value : list) {
            System.out.println(value);
        }

        /* 使用 迭代器对象来遍历  */
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()) {
            System.out.println(iterator.next());
        }

    }


}
